function moduleGadgets()
{
	
	this.enregistrer = function()
	{
		
		$('span.erreur').remove();
		$('div.gadget').css('border', '1px solid #B1C7EF');
		$('#conteneurMessage').html('&nbsp;');
		
		cp.ajaxService($('#formulaireGadgets').serializeArray(), function(reponse) {
			cp.setPageEnregistree();
			cp.messageOK(cp.msg.gadgets_enregistres_succes);
		}, function(reponse) {
			
			// Erreur de formulaire pour un gadget
			var code = parseInt($('code', reponse).text());
			
			if(code >= 100 && code <= 199) {
				
				cp.messageErreur(cp.msg.gadgets_erreur);
				
				var id_champ = '#'+$('champ', reponse).text();
				
				$(id_champ).after('<span class="erreur">'+$('message', reponse).text()+'</span>').
					closest('div.gadget').css('border', '3px solid red');
				
			}
			else
			{
				// Erreur
				alert(cp.msg.erreur+$('message', reponse).text());
			}

		});
		
		return false;
	};
	
	this.conditionsAffichage = function(i)
	{
		html =
			'<fieldset class="gadgetAffichage">'+
				'<legend>'+cp.msg.gadgets_affichage+'</legend>'+
				'<p>'+
					'<select name="affichage['+i+']" id="affichage_'+i+'">'+
						'<option value="1" selected="selected">'+cp.msg.gadgets_toutesPages+'</option>'+
						'<option value="2">'+cp.msg.gadgets_conditions+'</option>'+
					'</select>'+
				'</p>'+
				'<div class="conditionsPage" style="display:none;" id="gdg_'+i+'_conditionsAffichage">'+
				'</div>'+
			'</fieldset>';
		
		return html;
	};
	
	this.initGadget = function(dom, etat)
	{
		if(etat == 1) {
			var details = '<a href="#" class="details" etat="1">'+cp.msg.masquer_details+'</a>';
		} else {
			var details = '<a href="#" class="details" etat="0" style="background-image:url(images/16/afficher.png);">'+cp.msg.afficher_details+'</a>';
		}
		
		
		$(dom).find('h4').append(
				'<ul class="optionsGadget">'+
					'<li><a href="#" class="supprimerGadget">'+cp.msg.supprimer+'</a></li>'+
					'<li><a href="#" class="deplacerGadget">'+cp.msg.deplacer+'</a></li>'+
					'<li>'+details+'</li>'+
				'</ul>'
		);
	};
	
	this.initToggleConditionsAffichage = function(select)
	{
		$(select).change(function() {
			if($(this).val() == '2') {
				$(this).parent().parent().find('div.conditionsPage').css('display', 'block');
			} else {
				$(this).parent().parent().find('div.conditionsPage').css('display', 'none');
			}
		});
	};
	
	this.dropGadget = function(event,ui) {
		
		if($(ui.item).attr('loaded') == '1') {
			
			// Gadget existant déplacé
			var zone = $(ui.item).parent().parent().find('#ref_zone_id').val();
			$(ui.item).find('input.zoneField').val(zone);
			
			return true;
		}
		
		// Nouveau gadget
		
		var gadget_id = $(ui.item).attr('name');
		gadgetI++;
		
		conditionsVal = new Array(
				new Array('and', 'page_id', '=', '0')
		);
		
		cp.ajaxService({
			action:			'cp-gadgets-initNouveauGadget',
			gadget_id: 		gadget_id,
			i:				gadgetI
		}, function(reponse) {
			
			var zone = $(ui.item).parent().parent().find('#ref_zone_id').val();
			
			$(ui.item).attr('gadgetI', gadgetI);
			
			$(ui.item).removeClass('gadgetDisponible').addClass('gadget').attr('loaded', '1').
				find('div.contenuGadget').html(
						'<input type="hidden" name="gadgetI[]" value="'+gadgetI+'"/>'+
						'<input type="hidden" class="zoneField" name="zone_id['+gadgetI+']" value="'+zone+'" />'+
						'<input type="hidden" name="gadget_id['+gadgetI+']" value="'+gadget_id+'" />'+
						$('html', reponse).text()+
						mGadgets.conditionsAffichage(gadgetI)
				).find('div.conditionsPage').cpConditionsPage('conditionsAffichage['+gadgetI+']', conditionsVal, 0);
			
			mGadgets.initToggleConditionsAffichage($(ui.item).find('#affichage_'+gadgetI));
			
			eval($('javascript', reponse).text());
			
			if($('#montrerAffichage').attr('checked')) {
				$('.gadgetAffichage').show();
			} else {
				$('.gadgetAffichage').hide();
			}
			
		});
		
	};
	
}

mGadgets = new moduleGadgets();

$(document).ready(function() {
	
	// Initialisation des gadgets
	$('div.gadgetDisponible').each(function() {
		mGadgets.initGadget(this, 1);
	});
	
	$('div.gadget').each(function() {
		
		var gadgetI = $(this).attr('gadgetI');
		mGadgets.initGadget(this, 0);

		// Conditions d'affichage
		var selectAffichage = $(this).find('#affichage_'+gadgetI);
		if(selectAffichage.val() == '1') {
			conditionsAffichageData[gadgetI] = new Array(
					new Array('and', 'page_id', '=', '0')
			);
		}
		
		$(this).find('div.conditionsPage').cpConditionsPage('conditionsAffichage['+gadgetI+']', conditionsAffichageData[gadgetI], 0);
		mGadgets.initToggleConditionsAffichage(selectAffichage);
	});
	
	$('a.details').live('click', function() {
		if($(this).attr('etat') == '1') {
			$(this).html(cp.msg.afficher_details).css('background-image', 'url(images/16/afficher.png)').attr('etat', '0').
				parent().parent().parent().parent().find('div.contenuGadget').hide('blind');
		} else {
			$(this).html(cp.msg.masquer_details).css('background-image', 'url(images/16/masquer.png)').attr('etat', '1').
				parent().parent().parent().parent().find('div.contenuGadget').show('blind');
		}
		return false;
	});
	
	$('a.supprimerGadget').live('click', function() {
		if(confirm(cp.msg.gadgets_confirme_supprimer)) {
			$(this).parent().parent().parent().parent().supprimerAvecEffet();
		}
		return false;
	});

	// Zones de gadgets -> sortable
	$('div.zoneGadgets').sortable({
		connectWith: '.zoneGadgets',
		handle:'a.deplacerGadget',
		placeholder: 'accepteGadget',
		forcePlaceholderSize:true,
		axis:'y',
		revert: true,
		stop:mGadgets.dropGadget,
		update:function(event, ui) { cp.setPageModifiee(); }
	}).disableSelection();

	// Chaque "gadget disponible" est draggable
	stopMsgDesactive = false;
	$('div.gadgetDisponible').draggable({
		connectToSortable: 'div.zoneGadgets',
		helper: 'clone',
		revert: 'invalid',
		handle:'h4',
		containment:'document',
		drag:function(event,ui) {
			if(!stopMsgDesactive && $(ui.helper).hasClass('gadgetDisponibleDesactive'))
			{
				stopMsgDesactive = true;
				alert(msgGadgetsDesactives[$(ui.helper).attr('name')]);
				return false;
			}
			return true;
		},
		stop:function(event,ui) {
			stopMsgDesactive = false;
		}
	});
	
	// Options d'affichage
	$('.gadgetAffichage').hide();
	$('#montrerAffichage').attr('checked', '').change(function() {
		if($(this).attr('checked')) {
			$('.gadgetAffichage').show();
		} else {
			$('.gadgetAffichage').hide();
		}
	});
	
	// Enregistrer
	$('#boutonAction_enregistrer').click(mGadgets.enregistrer);
	
	$('#formulaireGadgets').submit(function() {
		mGadgets.enregistrer();
		return false;
	});
	
	// Message lorsque l'utilisateur quitte la page
	$('input[name!=montrerAffichage]').live('change', function() {cp.setPageModifiee(); });
	$('select').live('change', function() {cp.setPageModifiee(); });
	$('textarea').live('change', function() {cp.setPageModifiee(); });
	
});